<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>暂时性死区</title>
</head>
<body>
    <script>
        let a = 12;

        /* 在代码块内，使用let命令声明变量之前，该变量都是不可用的。
          这在语法上，称为“暂时性死区”（temporal dead zone，简称 TDZ） */

        // if(true){
        //     console.log(a);
        //     let a=12;
        // }

        // 使用typeof访问也会报错
        // console.log(typeof num);
        let num =100;

        /**
         * 暂时性死区的本质就是，只要一进入当前作用域，所要使用的变量就已经存在了(预解析只是不会赋值为undefined而是设置为不可用，而且global中看不到而是在script中)
         * 但是不可获取，只有等到声明变量的那一行代码出现，才可以获取和使用该变量。
        */
    </script>
</body>
</html>